//package org.example;
//
//import org.example.entity.CustomerInfo;
//import org.example.entity.CustomerOrder;
//import org.example.entity.CustomerRepayPlan;
//import org.example.generator.DataGenerator;
//
//import java.time.LocalDate;
//import java.util.List;
//
///**
// * 简单测试Vintage和迁徙率功能
// */
//public class SimpleVintageTest {
//    public static void main(String[] args) {
//        System.out.println("=== 简单测试Vintage和迁徙率功能 ===");
//
//        // 测试产品名称按时间分布
//        System.out.println("\n=== 产品名称测试 ===");
//        LocalDate date2023 = LocalDate.of(2023, 8, 15);
//        LocalDate date2024 = LocalDate.of(2024, 3, 15);
//
//        System.out.println("2023年8月产品: " + DataGenerator.getProductNameByDate(date2023));
//        System.out.println("2024年3月产品: " + DataGenerator.getProductNameByDate(date2024));
//
//        // 测试生成带逾期逻辑的还款计划
//        System.out.println("\n=== 还款计划逾期测试 ===");
//        CustomerInfo customer = DataGenerator.generateCustomerInfo(date2023);
//        CustomerOrder order = DataGenerator.generateCustomerOrder(customer, date2023, "测试");
//        List<CustomerRepayPlan> plans = DataGenerator.calculateRepayAmount(order, LocalDate.now());
//
//        System.out.println("订单号: " + order.getOrderNo());
//        System.out.println("产品名称: " + order.getProductName());
//        System.out.println("贷款金额: " + order.getLoanAmount());
//        System.out.println("还款期数: " + plans.size());
//
//        // 统计逾期情况
//        int overdueCount = 0;
//        int totalOverdueDays = 0;
//
//        System.out.println("\n还款计划详情:");
//        for (CustomerRepayPlan plan : plans) {
//            System.out.printf("期数%d: 应还日期=%s, 状态=%s, 逾期天数=%d, 应还金额=%s\n",
//                    plan.getBillTenor(),
//                    plan.getDueDate(),
//                    plan.getRepayStatus(),
//                    plan.getOverdueDays(),
//                    plan.getNowPayAmount());
//
//            if (plan.getOverdueDays() > 0) {
//                overdueCount++;
//                totalOverdueDays += plan.getOverdueDays();
//            }
//        }
//
//        System.out.printf("\n逾期统计: %d期逾期, 总逾期天数: %d天\n", overdueCount, totalOverdueDays);
//
//        // 测试迁徙率
//        System.out.println("\n=== 迁徙率测试 ===");
//        int m1Count = 0, m2Count = 0, m3Count = 0, m4Count = 0, m5Count = 0, m6Count = 0;
//
//        for (CustomerRepayPlan plan : plans) {
//            if (plan.getOverdueDays() > 0) {
//                if (plan.getOverdueDays() <= 30) m1Count++;
//                else if (plan.getOverdueDays() <= 60) m2Count++;
//                else if (plan.getOverdueDays() <= 90) m3Count++;
//                else if (plan.getOverdueDays() <= 120) m4Count++;
//                else if (plan.getOverdueDays() <= 150) m5Count++;
//                else m6Count++;
//            }
//        }
//
//        System.out.printf("M1(0-30天): %d期\n", m1Count);
//        System.out.printf("M2(31-60天): %d期\n", m2Count);
//        System.out.printf("M3(61-90天): %d期\n", m3Count);
//        System.out.printf("M4(91-120天): %d期\n", m4Count);
//        System.out.printf("M5(121-150天): %d期\n", m5Count);
//        System.out.printf("M6(150天+): %d期\n", m6Count);
//
//        if (m1Count > 0) {
//            System.out.printf("M1->M2迁徙率: %.1f%%\n", (double) m2Count / m1Count * 100);
//        }
//        if (m2Count > 0) {
//            System.out.printf("M2->M3迁徙率: %.1f%%\n", (double) m3Count / m2Count * 100);
//        }
//    }
//}

